home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 65.zip
/
BS1 part 65
/
Math Visin v2.1 disk 1.adf
/
Arexx.WB
/
Misc
/
SayColors
< prev
next >
Wrap
Text File
|
1992-02-12
|
5KB
|
199 lines
/* SayColors Give English versions of the colors onscreen 7-mar-90 dh
A sparse 3-dimensional array is used, with color names scattered throughout
the array. The screen color indexes into this array, and a search is made
for the closest named color. This program is by no means complete or
accurate. If you have a good eye for color, try filling in the initialization
routine.
==========================================================================*/
ADDRESS "MathVision"
OPTIONS RESULTS
OPTIONS FAILAT 1
SIGNAL ON ERROR
CALL InitColorTable
Get Depth
NumColors = 2**RESULT
DO i = 0 to NumColors-1
Get Color i
PARSE VAR RESULT DMAColorR.i DMAColorG.i DMAColorB.i
END
StopSign "F"
DO i = 0 to NumColors-1
Say "Color "i GetColorName( DMAColorR.i DMAColorG.i DMAColorB.i )
Get StopSign
IF (RESULT = "T") THEN EXIT
END
OPTIONS PROMPT "Press <RETURN> to Exit: "
PULL response
EXIT
/*------------------------ InitColorTable ----------------------------- */
InitColorTable: /* sparse 3-dimensional array */
/* CT.Red.Green.Blue */
CT. = "" /* initialize to nil */
CT.0.0.0 = "Black"
CT.0.0.4 = ""
CT.0.0.8 = "Dark Blue"
CT.0.0.12 = ""
CT.0.0.15 = "Blue"
CT.0.4.0 = ""
CT.0.4.4 = ""
CT.0.4.8 = ""
CT.0.4.12 = ""
CT.0.4.15 = ""
CT.0.8.0 = "Dark Green"
CT.0.8.4 = ""
CT.0.8.8 = "Green Gray"
CT.0.8.12 = ""
CT.0.8.15 = "Light Blue"
CT.0.12.0 = "Light Green"
CT.0.12.4 = ""
CT.0.12.8 = "Pale Green"
CT.0.12.12 = ""
CT.0.12.15 = "Light Blue"
CT.0.15.0 = "Green"
CT.0.15.4 = ""
CT.0.15.8 = "Light Green"
CT.0.15.12 = "Pale Green"
CT.0.15.15 = "Light Blue"
CT.4.0.0 = ""
CT.4.0.4 = ""
CT.4.0.8 = ""
CT.4.0.12 = ""
CT.4.0.15 = ""
CT.4.4.0 = ""
CT.4.4.4 = "Dark Gray"
CT.4.4.8 = ""
CT.4.4.12 = ""
CT.4.4.15 = ""
CT.4.8.0 = ""
CT.4.8.4 = ""
CT.4.8.8 = ""
CT.4.8.12 = ""
CT.4.8.15 = ""
CT.4.12.0 = ""
CT.4.12.4 = ""
CT.4.12.8 = ""
CT.4.12.12 = ""
CT.4.12.15 = ""
CT.4.15.0 = ""
CT.4.15.4 = ""
CT.4.15.8 = ""
CT.4.15.12 = ""
CT.4.15.15 = ""
CT.8.0.0 = "Rust"
CT.8.0.4 = ""
CT.8.0.8 = "Magenta"
CT.8.0.12 = "Violet"
CT.8.0.15 = "RedBlue"
CT.8.4.0 = "Chocolate Brown"
CT.8.4.4 = ""
CT.8.4.8 = ""
CT.8.4.12 = ""
CT.8.4.15 = ""
CT.8.8.0 = "Slate Green"
CT.8.8.4 = ""
CT.8.8.8 = "Gray"
CT.8.8.12 = "Blue Gray"
CT.8.8.15 = ""
CT.8.12.0 = "Yellow Green"
CT.8.12.4 = ""
CT.8.12.8 = "Pastel Green"
CT.8.12.12 = "Gray Green"
CT.8.12.15 = "Sky Blue"
CT.8.15.0 = "Bright YellowGreen"
CT.8.15.4 = ""
CT.8.15.8 = ""
CT.8.15.12 = ""
CT.8.15.15 = "Baby Blue"
CT.12.0.0 = "Blood Red"
CT.12.0.4 = ""
CT.12.0.8 = ""
CT.12.0.12 = "Violet"
CT.12.0.15 = ""
CT.12.4.0 = ""
CT.12.4.4 = ""
CT.12.4.8 = ""
CT.12.4.12 = "Pastel Purple"
CT.12.4.15 = ""
CT.12.8.0 = "Mustard"
CT.12.8.4 = ""
CT.12.8.8 = "Pastel Brown"
CT.12.8.12 = "Pastel Purple"
CT.12.8.15 = ""
CT.12.12.0 = ""
CT.12.12.4 = ""
CT.12.12.8 = ""
CT.12.12.12 = "Light Gray"
CT.12.12.15 = "Steel Gray"
CT.12.15.0 = "Yellow Green"
CT.12.15.4 = ""
CT.12.15.8 = ""
CT.12.15.12 = ""
CT.12.15.15 = "Light Blue"
CT.15.0.0 = "Red"
CT.15.0.4 = ""
CT.15.0.8 = ""
CT.15.0.12 = ""
CT.15.0.15 = "Purple"
CT.15.4.0 = ""
CT.15.4.4 = ""
CT.15.4.8 = "Pink"
CT.15.4.12 = "Light Purple"
CT.15.4.15 = ""
CT.15.8.0 = "Tan"
CT.15.8.4 = ""
CT.15.8.8 = "Peach"
CT.15.8.12 = ""
CT.15.8.15 = ""
CT.15.12.1 = "Jaundice"
CT.15.12.4 = ""
CT.15.12.8 = "Wheat"
CT.15.12.12 = "Peach Brown"
CT.15.12.15 = ""
CT.15.15.0 = "Yellow"
CT.15.15.4 = ""
CT.15.15.8 = "Light Yellow"
CT.15.15.12 = "Pale Yellow"
CT.15.15.15 = "White"
RETURN
/*----------------------------- GetColorName ------------------------------ */
GetColorName:
ARG Red Green Blue
DO Radius = 0 to 15
DO R = Red-Radius TO Red+Radius
DO G = Green-Radius TO Green+Radius
DO B = Blue-Radius TO Blue+Radius
IF (CT.R.G.B ~= "")
THEN DO
FoundR = R; FoundG = G; FoundB = B
r = 1000; g = 1000; b = 1000; radius = 1000
END
END
END
END
END
RETURN CT.FoundR.FoundG.FoundB
ERROR: /* Error Diagnostic for return codes */
Get Diagnosis RC
SAY RESULT" on line "SIGL
do i=0 to 500; end
EXIT